var express = require('express');
var router = express.Router();

// websocket基础测试
router.ws("/echo", (ws, req)=>{
    let host = `客户端${req.host}`;
    console.log(`${host}已连接...`);
    ws.send(`恭喜${host}已成功连接到websocket服务端`)


    // 服务端可以设置定时器来轮询推送消息给客户端
    let timeId = setInterval(()=>{
        ws.send(`${new Date().toLocaleString()}`)
    }, 1000)

    // 监听客户端发送的数据
    ws.on('message', function(msg) {
        console.log(`从${host}接收到数据:【${msg}】`);
        ws.send(`服务器已收到数据:【${msg}】`)

        // 此时可以添加一些复杂的逻辑（stop停止轮询推送， ok开始轮询推送）
        if(msg.toLowerCase() === "end"){
            ws.send(`服务器停止轮询推送数据...`)
            clearInterval(timeId); // 定时器停止
        }else if(msg.toLowerCase() === "start"){
            ws.send(`服务器继续轮询推送数据...`)
            timeId = setInterval(()=>{
                ws.send(`${new Date().toLocaleString()}`)
            }, 1000)
        }
    });

    // 客户端主动发送请求断开websocket连接时触发
    ws.on("close", (cid) => {
        console.log(`${cid} 客户端已断开`);
        clearInterval(timeId); // 停止定时器
        timeId = null; // 解除引用，避免内存泄露（关闭再释放变量）
    })
})


module.exports = router;